/*******************************************************************
 * Copyright (c) 2013 珠海比特讯科技有限公司. All rights reserved.
 * （1）软件的版权将受到法律保护，不允许非经授权的使用；
 * （2）未经版权所有人授权，任何人不得修改、复制和传播软件源代码、图片及其它资源等；
 * （3）未经版权所有人授权，不允许对软件进行修改；
 * （4）未经版权所有人授权，不允许在该软件的基础上开发新的软件；
 * （5）珠海比特讯科技有限公司拥有最终解释权
 *******************************************************************/
package youxiao.bytezon.models;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalTime;

import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import youxiao.bytezon.enums.AttendanceState;
import youxiao.bytezon.enums.PayState;
import youxiao.bytezon.enums.StudentCourseDetailState;

@Entity
@Table(name = "student_course_detail")
public class StudentCourseDetail implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "course_id")
	private Course course;

	@Id
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "course_detail_id")
	private CourseDetail courseDetail;

	@Id
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "student_id")
	private Student student;

	@Column
	private BigDecimal price;

	@Convert(converter = StudentCourseDetailState.JpaConvert.class)
	@Column
	private StudentCourseDetailState state;

	@Column
	private PayState payState;

	@Column
	private AttendanceState attendanceState;

	@Column
	private LocalTime attendStarttime;

	@Column
	private LocalTime attendEndtime;

	public Course getCourse() {
		return course;
	}

	public void setCourse(Course course) {
		this.course = course;
	}

	public Student getStudent() {
		return student;
	}

	public void setStudent(Student student) {
		this.student = student;
	}

	public CourseDetail getCourseDetail() {
		return courseDetail;
	}

	public void setCourseDetail(CourseDetail courseDetail) {
		this.courseDetail = courseDetail;
	}

	public BigDecimal getPrice() {
		return price;
	}

	public void setPrice(BigDecimal price) {
		this.price = price;
	}

	public StudentCourseDetailState getState() {
		return state;
	}

	public void setState(StudentCourseDetailState state) {
		this.state = state;
	}

	public PayState getPayState() {
		return payState;
	}

	public void setPayState(PayState payState) {
		this.payState = payState;
	}

	public AttendanceState getAttendanceState() {
		return attendanceState;
	}

	public void setAttendanceState(AttendanceState attendanceState) {
		this.attendanceState = attendanceState;
	}

	public LocalTime getAttendStarttime() {
		return attendStarttime;
	}

	public void setAttendStarttime(LocalTime attendStarttime) {
		this.attendStarttime = attendStarttime;
	}

	public LocalTime getAttendEndtime() {
		return attendEndtime;
	}

	public void setAttendEndtime(LocalTime attendEndtime) {
		this.attendEndtime = attendEndtime;
	}

}
